﻿using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Design;
using Microsoft.Extensions.Configuration;
using System;
using System.Collections.Generic;
using System.Data.Common;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Entity
{
    public class SMDBContext:DbContext
    {
        private readonly string? _ConnectionString;
        public SMDBContext (DbContextOptions<SMDBContext> opts) : base(opts)
        {
            
        }
        /// <summary>
        /// 账户
        /// </summary>
        //public DbSet<EntityAccount> EntityAccount { get; set; }
        /// <summary>
        /// 用户信息
        /// </summary>
        public DbSet<EntityUser> EntityUser { get; set; }
        /// <summary>
        /// 报名表
        /// </summary>
        //public DbSet<EntityEntryForm> EntityEntryForm { get; set; }
        //protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        //{
        //    optionsBuilder.UseMySql(_ConnectionString, new MySqlServerVersion(new Version(9, 2, 0)));
        //}
        //protected override void OnModelCreating(ModelBuilder modelBuilder)
        //{
        //    modelBuilder.UseCollation("utf8mb4_german2_ci").HasCharSet("utf8mb4");
        //}
        
        ///<summary>
        ///数据模型（表）构建函数
        ///1.设置表的一些字符集
        ///2.设定数据模型的主外键等一些关系
        ///3.添加默认数据
        ///</summary>
        ///<param name="modelBuilder"></param>
        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            EntityUser user = new EntityUser();
            user.FirstName = "123123";
            user.LastName = "345";

            modelBuilder.Entity<EntityUser>().HasData([
                new EntityUser{
                    FirstName="zhangsan",
                    LastName="san",
                    Email="4444shssjhx.cvf"
                },
                new EntityUser{
                    Age=20,
                    phoneNumber="12345678901"
                }

                ]);
        }
    }
    
    public class SMDBContextFactory : IDesignTimeDbContextFactory<SMDBContext>
    {
        public SMDBContext CreateDbContext(string[] args)
        {
            var optionBuilder = new DbContextOptionsBuilder<SMDBContext>();
            optionBuilder.UseMySql(
                 "server=localhost;userid=root;password=123456;database=AIYDB",
                new MySqlServerVersion(new Version(8, 0, 41))
                );

            return new SMDBContext(optionBuilder.Options);
           }
        }
    }
